今天要講到的是react中的事件監聽,在react中,只要在JSX的元素標籤內,根據特定方法給出的屬性名,給予其所需執行的方法,就會在事件觸發時做執行了,舉個例子,我們把index.js之前的東西清理一下:
import React from "react"
export default () => {
function clickHandler() {
alert('clicked!!');
}
return(
<div>
<button onClick={clickHandler}>button</button>
</div>
)}
值得注意的有兩件事:
例如以下的例子就會出問題:
import React from "react"
export default () => (
<div>
<button onClick={alert('clicked')}>button</button>
</div>
)
另一種情況是,我們在裡面寫了this,像這樣:
import React from "react"
export default () => {
function clickHandler() {
alert('clicked!!');
}
return(
<div>
<button onClick={this.clickHandler}>button</button>
</div>
)}
上面這個例子也會報錯,原因是當我們用了this,它抓不到clickHandler這個方法,原因是它抓到的應該是觸發事件的元素本身,也就是button的按鈕,而非外層的箭頭函式。
而若是想把參數綁到事件監聽的函式上時,可以用bind方法來進行綁定。
我也常用這種做法 當 function 內需要有參數時
onClick={() => clickHandler('click')}
感謝分享噢